import test_exception_module


def use_exception1():
    try:
        num = int(input('请输入一个数字'))
        print(num)
    except:
        print('输入的必须是整型数字')


def use_exception2():
    '''
    掌握不同异常可以跳转不同分支
    :return:
    '''
    try:
        num = int(input('请输入整数:'))
        result = 8 / num
        print(result)
    except ValueError:
        print('请输入一个整数')
    except Exception as e:  # e代表异常对象的别名
        print(e)


def use_exception3():
    '''
    掌握不同异常可以跳转不同分支
    :return:
    '''
    try:
        num = int(input('请输入整数:'))
        result = 8 / num
        print(result)

    except ValueError:
        print('请输入一个整数')
        return

    except Exception as e:  # e代表异常对象的别名
        print('未知错误%s' % e)
    else:
        print('正常执行')

    finally:  # 都会执行,不受return影响
        print('执行完成，但不保证正确')


def use_exception5():
    '''
    如何捕获异常发生的模块
    :return:
    '''
    try:
        test_exception_module.test()
    except Exception as e:
        print(e)
        # 输出异常发生的文件名和行号   ai做，格式固定没必要背
        print(e.__traceback__.tb_frame.f_code.co_filename)
        print(e.__traceback__.tb_lineno)


if __name__ == '__main__':
    # use_exception1()
    # use_exception2()
    # use_exception3()
    use_exception5()
